package gatperdut.chato.core.messaging.packagers;

import gatperdut.chato.core.keywords.KeywordsController;
import gatperdut.chato.model.Chato.Item.ItemTemplate;

import java.util.Arrays;

import org.json.simple.JSONObject;

public class ItemTemplatesPackager extends GenericPackager<ItemTemplate> {

    public static enum ItemTemplateJSONAttr {
        ID("id"), SHORT_DESC("short_desc"), LONG_DESC("long_desc"), FULL_DESC("full_desc"), KEYWORDS("keywords"), W("w");

        private final String name;

        private ItemTemplateJSONAttr( String name ) {
            this.name = name;
        }

        public String getName() {
            return name;
        }
    };

    @SuppressWarnings( "unchecked" )
    @Override
    public JSONObject packageOne( ItemTemplate itemTemplate ) {
        JSONObject itemTemplateJO = new JSONObject();

        itemTemplateJO.put( ItemTemplateJSONAttr.ID.getName(), itemTemplate.cdoID().toURIFragment() );
        itemTemplateJO.put( ItemTemplateJSONAttr.SHORT_DESC.getName(), itemTemplate.getShortDesc() );
        itemTemplateJO.put( ItemTemplateJSONAttr.LONG_DESC.getName(), itemTemplate.getLongDesc() );
        itemTemplateJO.put( ItemTemplateJSONAttr.FULL_DESC.getName(), itemTemplate.getFullDesc() );
        itemTemplateJO.put( ItemTemplateJSONAttr.KEYWORDS.getName(), KeywordsController.toJSONArray( itemTemplate.getKeywords() ) );
        itemTemplateJO.put( ItemTemplateJSONAttr.W.getName(), itemTemplate.getW() );

        return itemTemplateJO;
    }

    @Override
    public ItemTemplate[] toArray( Object[] itemTemplatesArray ) {
        return Arrays.copyOf( itemTemplatesArray, itemTemplatesArray.length, ItemTemplate[].class );
    }

}
